OpenPyXL也提供了比较强大的图表绘制功能,可以绘制二维图和三维图。常见的图表类型如线形图、条形图、面积图、饼图等都是支持的。本节介绍用OpenPyXL绘制条形图和饼图的方法。[大谦Excel,dqexcel点com]
条形图
【问题描述】
用给定数据,使用OpenPyXL绘制二维条形图。
【示例12-3】
本例使用示例12-1的数据,试用该数据绘制二维复合条形图。
- 编写下面的xlwings代码:
code.python
# 导入openpyxl模块中的Workbook、load_workbook和charts等模块
from openpyxl import Workbook, load_workbook
from openpyxl.chart import BarChart, Reference, Series
# 读取文件
wb = load_workbook("D:/Samples/ch12/商品销量.xlsx")
# 选择第一个工作表
ws = wb.worksheets[0]
# 获取B2:D6范围内的数据,保存为Referece对象
data = Reference(ws, min_col=2, min_row=2, max_col=4, max_row=6)
# 获取A2:A6范围内的数据,保存为Referece对象,用于作为条形图的横坐标
labels = Reference(ws, min_col=1, min_row=2, max_col=1, max_row=6)
# 创建条形图对象
chart = BarChart()
# 设置数据源
chart.add_data(data, titles_from_data=True)
# 设置x轴标签
chart.set_categories(labels)
# 位置设置
chart.title = "商品销量"
chart.x_axis.title = "商品名称"
chart.y_axis.title = "销量"
# 将条形图插入到指定单元格
ws.add_chart(chart, "E2")
# 保存文件
wb.save("D:/Samples/ch12/商品销量.xlsx")
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,生成复合条形图并添加到Excel工作表中,如图12-5所示。
图12-5 用OpenPyXL包绘制的复合条形图
【知识点扩展】
OpenPyXL中使用BarChart函数绘制条形图。该函数返回一个条形图对象,利用条形图对象的add_data方法绑定数据,利用set_categories方法设置标签。注意,绘图数据和标签数据需要先保存为Reference对象,然后作为add_data方法和set_categories方法的参数进行指定。
图表创建完毕后,用工作表对象的add_chart方法将图表添加到Excel工作表的指定位置。
饼图
【问题描述】
用给定数据,使用OpenPyXL绘制二维饼图。
【示例12-4】
本例使用示例12-2的数据,试用该数据绘制二维饼图。
- 编写下面的xlwings代码:
code.python
import openpyxl
from openpyxl.chart import PieChart, Reference, Series
# 打开Excel文件并选定指定工作表
wb = openpyxl.load_workbook('D:/Samples/ch12/访客年龄.xlsx')
ws = wb['Sheet1']
# 创建饼图并指定数据范围
pie = PieChart()
labels = Reference(ws, min_col=1, min_row=2, max_row=5)
data = Reference(ws, min_col=2, min_row=1, max_row=5)
pie.add_data(data, titles_from_data=True)
# 添加扇区标签
pie.set_categories(labels)
# 将饼图插入到单元格E1中
ws.add_chart(pie, "E1")
# 保存Excel文件
wb.save("D:/Samples/ch12/访客年龄.xlsx")
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,生成饼图并添加到Excel工作表中,如图12-6所示。
图12-6 用OpenPyXL包生成饼图
【知识点扩展】
使用PieChart函数创建饼图,绘图数据和标签数据的保存和绑定及其他操作与条形图的类似。